You
tell Gnus how to fetch mail by setting mail-sources
(see Fetching
Mail) to a mail source specifier.
Here's an example:
(pop :server "pop3.mailserver.com" :user "myname")
As can be observed, a mail source specifier is a list where the first element is a mail source type, followed by an arbitrary number of keywords. Keywords that are not explicitly specified are given default values.
The mail-sources is global for all mail groups.
You can specify an additional mail source for a particular group
by including the group mail specifier in
mail-sources, and setting a mail-source
group parameter (see Group Parameters)
specifying a single mail source. When this is used,
mail-sources is typically just (group);
the mail-source parameter for a group might look
like this:
(mail-source . (file :path "home/user/spools/foo.spool"))
This means that the group's (and only this group's) messages will be fetched from the spool file ‘/user/spools/foo.spool’.
The following mail source types are available:
fileKeywords:
:pathrmail-spool-directory
(usually something like /usr/mail/spool/user-name).:prescript:postscriptAn example file mail source:
(file :path "/usr/spool/mail/user-name")
Or using the default file name:
(file)
If the mail spool file is not located on the local machine, it's best to use POP or IMAP or the like to fetch the mail. You can not use ange-ftp file names here—it has no way to lock the mail spool while moving the mail.
If it's impossible to set up a proper server, you can use ssh instead.
(setq mail-sources
'((file :prescript "ssh host bin/getmail >%t")))
The ‘getmail’ script would look something like the following:
#!/bin/sh
# getmail - move mail from spool to stdout
# flu@iki.fi
MOVEMAIL=/usr/lib/emacs/20.3/i386-redhat-linux/movemail
TMP=$HOME/Mail/tmp
rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
Alter this script to fit the ‘movemail’ and temporary file you
want to use.
directoryfoo.bar. (You can change the suffix to be used
instead of .spool.) Setting
nnmail-scan-directory-mail-source-once to
non-nil forces Gnus to scan the mail source only
once. This is particularly useful if you want to scan mail
groups at a specified level.
There is
also the variable nnmail-resplit-incoming, if
you set that to a non-nil value, then the normal
splitting process is applied to all the files from the
directory, Splitting Mail.
Keywords:
:path:suffix:predicatenil are returned. The default is
identity. This is used as an additional
filter—only files that have the right suffix
and satisfy this predicate are
considered.:prescript:postscriptAn example directory mail source:
(directory :path "/home/user-name/procmail-dir/"
:suffix ".prcml")
popKeywords:
:server:port:user:password:programformat-like string. Here's an example:
fetchmail %u@%s -P %p %t
The valid format specifier characters are:
The values used for these specs are taken from the
values you give the corresponding keywords.
:prescript:program keyword. This can
also be a function to be run.:postscript:program keyword. This can
also be a function to be run.:function:authenticationpassword or
the symbol apop and says what authentication
scheme to use. The default is password.If
the :program and :function keywords
aren't specified, pop3-movemail will be used. If
pop3-leave-mail-on-server is
non-nil the mail is to be left on the
POP server after fetching when using
pop3-movemail. Note that POP servers maintain no
state information between sessions, so what the client
believes is there and what is actually there may not match
up. If they do not, then you may get duplicate mails or the
whole thing can fall apart and leave you with a corrupt
mailbox.
Here are some examples for getting mail from a POP server. Fetch from the default POP server, using the default user name, and default fetcher:
(pop)
Fetch from a named server with a named user and password:
(pop :server "my.pop.server"
:user "user-name" :password "secret")
Use ‘movemail’ to move the mail:
(pop :program "movemail po:%u %t %p")
maildirKeywords:
:path:subdirsYou can also get mails from remote hosts (because maildirs don't suffer from locking problems).
Two example maildir mail sources:
(maildir :path "/home/user-name/Maildir/"
:subdirs ("cur" "new"))
(maildir :path "/user@remotehost.org:~/Maildir/"
:subdirs ("new"))
imapKeywords:
:server:port:user:password:streamimap-stream-alist.
Right now, this means ‘gssapi’,
‘kerberos4’,
‘starttls’,
‘tls’,
‘ssl’,
‘shell’
or the default ‘network’.:authenticationimap-authenticator-alist. Right now, this
means ‘gssapi’,
‘kerberos4’,
‘digest-md5’,
‘cram-md5’,
‘anonymous’ or the default
‘login’.:programimap-shell-program variable. This should be
a format-like string (or list of strings).
Here's an example:
ssh %s imapd
Make sure nothing is interfering with the output of the program, e.g., don't forget to redirect the error output to the void. The valid format specifier characters are:
imap-default-user.The values used for these specs are taken from the
values you give the corresponding keywords.
:mailbox:predicate:fetchflag:dontexpungenil, don't remove all articles
marked as deleted in the mailbox after finishing the
fetch.An example IMAP mail source:
(imap :server "mail.mycorp.com"
:stream kerberos4
:fetchflag "\\Seen")
groupmail-source group parameter, See Group
Parameters.Keywords:
:pluggednil, fetch the mail even when Gnus is
unplugged. If you use directory source to get mail, you
can specify it as in this example:
(setq mail-sources
'((directory :path "/home/pavel/.Spool/"
:suffix ""
:plugged t)))
Gnus will then fetch your mail even when you are unplugged. This is useful when you use local mail and news.
Some of the above keywords specify a Lisp function to be
executed. For each keyword :foo, the Lisp variable
foo is bound to the value of the keyword while the
function is executing. For example, consider the following
mail-source setting:
(setq mail-sources '((pop :user "jrl"
:server "pophost" :function fetchfunc)))
While the function fetchfunc is executing, the
symbol user is bound to "jrl", and the
symbol server is bound to "pophost".
The symbols port, password,
program, prescript,
postscript, function, and
authentication are also bound (to their default
values).
See above for a list of keywords for each type of mail source.